package com.jt;

/**
 * @author 金帮嘉诚 @date 2021-09-06 星期一 14:43
 */

import redis.clients.jedis.Jedis;

import java.util.UUID;

/**
 * 单点登陆应用实践
 */
public class SSODemo01 {
    static String host = "192.168.126.128";

    static String token;

    static void dogetResource() {
        //1.token是否存在
        if (token == null) {
            System.out.println("please login");
            return;
        }

        //2.检查token是否失效
        Jedis jedis = new Jedis(host, 6379);
        String user = jedis.get(token);
        jedis.close();

        if (user == null) {
            System.out.println("login timeout // token invalid");
            return;
        }
        //3.返回资源
        System.out.println("==return user resource==");
        return;
    }

    /**
     * 模拟登录,登录会生成token并和username一起存在redis中
     * */
    static void doLogin(String username, String password) {

        if ("kim".equals(username) && "123".equals(password)) {//用"".equals() 可以防止传入空串
            String token = UUID.randomUUID().toString();
            Jedis jedis = new Jedis(host, 6379);
            jedis.set(token, username);//存储用户信息到redis
            jedis.close();

            jedis.expire(token, 1);

            SSODemo01.token = token;//
            return;

        }
        System.out.println("login error");
    }

    public static void main(String[] args) throws InterruptedException {

        //访问
        dogetResource();//访问会检查token

        //登录
        doLogin("kim", "123");//登录成功会产生token

        //访问
        dogetResource();//检查token成功就会返回资源
        Thread.sleep(1000);
        dogetResource();
    }


}
